package com.cash.loan.modular.cash.service;

import com.cash.loan.modular.cash.result.PageResult;
import com.cash.loan.modular.cash.transfer.*;

import java.util.List;
import java.util.Map;

/**
 * 产品处理类接口
 * @author Administrator
 * @Date 2018-07-11 15:33
 */
public interface ProductService {

    /**
     * 产品列表查询   
     * @param currentPage
     * @param pageSize
     * @param queryDto
     * @return
     */
    PageResult<ProductListVo> getProductList(Integer currentPage, Integer pageSize, ProductQueryDto queryDto);

    /**
     * 保存新产品
     * @param productDto
     * @return
     */
    Boolean saveProduct(NewProductDto productDto);

    /**
     * 修改产品状态
     * @param productId
     * @param productFlag
     * @return
     */
    Boolean updateProductStatus(Long productId,Long productFlag);

    /**
     * 修改管理状态
     * @param productId
     * @param manageFlag
     * @return
     */
    Boolean updateManageStatus(Long productId,Long manageFlag);

    /**
     * 更新下载状态
     * @param productId
     * @param downloadFlag
     * @return
     */
    Boolean updateDownloadStatus(Long productId,Long downloadFlag);

    /**
     * 产品详情
     * @param productId
     * @return
     */
    ProductDetailMapVo productDetail(Long productId);

    /**
     * 修改产品属性
     * @param productDto
     * @return
     */
    Boolean updateProductStatus(UpdateProductDto productDto);

    /**
     * 统计一个产品的pvUv
     * @param currentPage
     * @param pageSize
     * @param productId
     * @return
     */
    PageResult<Map<String,Object>> listProductPvAndUv(Integer currentPage,Integer pageSize,Long productId);

    /**
     * 提供广告新增或修改的产品查询
     * @param currentPage
     * @param pageSize
     * @param keyword
     * @return
     */
    PageResult<Map<String,Object>> getProductListForAd(Integer currentPage,Integer pageSize,String keyword);

    /**
     * 更改排序值
     * @param id
     * @param orderNum
     * @return
     */
    Boolean changeOrderNum(Integer id,Integer orderNum);

    /**
     * 得到所以的产品id和名称
     * @return
     */
    List<Map<String,Object>> getAllProduct();
}
